//
//  Array+YHExension.swift
//  YHKit
//
//  Created by amovision on 2025/9/16.
//

import Foundation

public extension Array where Element: Hashable {
  /// 移除数组中满足指定条件的所有重复元素，只保留第一次出现的元素。
  ///
  /// - Parameter predicate: 一个闭包，用于判断两个元素是否被视为重复。
  /// - Returns: 一个新数组，其中满足谓词条件的重复元素已被移除。
  func removingDuplicates(by predicate: (Element, Element) -> Bool) -> [Element] {
    return reduce(into: []) { uniqueElements, element in
      let isDuplicate = uniqueElements.contains { existingElement in
        predicate(existingElement, element)
      }
      if !isDuplicate {
        uniqueElements.append(element)
      }
    }
  }
}
